package com.asset.dispoal.business.casedispose.service;

import com.asset.dispoal.business.casedispose.api.CaseDisposeService;
import com.asset.dispoal.business.casedispose.dto.AppointAssetBatchResponse;
import com.asset.dispoal.business.casedispose.dto.CaseDisposalFileResponse;
import com.asset.dispoal.business.casedispose.dto.CaseDisposeExecutionUpdateRequest;
import com.asset.dispoal.business.casedispose.dto.CaseDisposeFormulaRequest;
import com.asset.dispoal.business.casedispose.dto.CaseDisposeFormulaResponse;
import com.asset.dispoal.business.casedispose.dto.CaseDisposeJudgmentUpdateRequest;
import com.asset.dispoal.business.casedispose.dto.CaseDisposeMediationUpdateRequest;
import com.asset.dispoal.business.casedispose.dto.CaseDisposeNormalUpdateRequest;
import com.asset.dispoal.business.casedispose.dto.CaseDisposePageRequest;
import com.asset.dispoal.business.casedispose.dto.CaseDisposePageResponse;
import com.asset.dispoal.business.casedispose.dto.CaseDisposePreLitigationMediationRequest;
import com.asset.dispoal.business.casedispose.dto.CaseDisposeRegisterUpdateRequest;
import com.asset.dispoal.business.casedispose.dto.CaseDisposeResponse;
import com.asset.dispoal.business.casedispose.dto.CaseDisposeWithdrawCaseRequest;
import com.asset.dispoal.business.casedispose.service.command.CaseDisposalFileDeleteByIdCommand;
import com.asset.dispoal.business.casedispose.service.command.CaseDisposalFileGetCaseIdCommand;
import com.asset.dispoal.business.casedispose.service.command.CaseDisposeDetailGetCommand;
import com.asset.dispoal.business.casedispose.service.command.CaseDisposeFormulaCommand;
import com.asset.dispoal.business.casedispose.service.command.CaseDisposePageCommand;
import com.asset.dispoal.business.casedispose.service.command.CaseDisposePreLitigationMediationCommand;
import com.asset.dispoal.business.casedispose.service.command.CaseDisposeQueryAppointCommand;
import com.asset.dispoal.business.casedispose.service.command.CaseDisposeUpdateExecutionCommand;
import com.asset.dispoal.business.casedispose.service.command.CaseDisposeUpdateJudgmentCommand;
import com.asset.dispoal.business.casedispose.service.command.CaseDisposeUpdateMediationCommand;
import com.asset.dispoal.business.casedispose.service.command.CaseDisposeUpdateNormalCommand;
import com.asset.dispoal.business.casedispose.service.command.CaseDisposeUpdateRegisterCommand;
import com.asset.dispoal.business.casedispose.service.command.CaseDisposeWithdrawCommand;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tech.mhuang.pacebox.springboot.protocol.Result;
import tech.mhuang.pacebox.springboot.protocol.data.PageVO;

import java.util.List;

@Service
public class CaseDisposeServiceImpl implements CaseDisposeService {

    @Autowired
    CaseDisposePageCommand caseDisposePageCommand;

    @Autowired
    CaseDisposePreLitigationMediationCommand caseDisposePreLitigationMediationCommand;

    @Autowired
    CaseDisposeWithdrawCommand caseDisposeWithdrawCommand;

    @Autowired
    CaseDisposeDetailGetCommand caseDisposeDetailGetCommand;

    @Autowired
    CaseDisposalFileGetCaseIdCommand caseDisposalFileGetCaseIdCommand;

    @Autowired
    CaseDisposalFileDeleteByIdCommand caseDisposalFileDeleteByIdCommand;

    @Autowired
    CaseDisposeFormulaCommand caseDisposeFormulaCommand;

    @Autowired
    CaseDisposeUpdateNormalCommand normalUpdateCommand;

    @Autowired
    CaseDisposeUpdateRegisterCommand registerUpdateCommand;

    @Autowired
    CaseDisposeUpdateJudgmentCommand judgmentUpdateCommand;

    @Autowired
    CaseDisposeUpdateMediationCommand mediationUpdateCommand;

    @Autowired
    CaseDisposeUpdateExecutionCommand executionUpdateCommand;

    @Autowired
    CaseDisposeQueryAppointCommand caseDisposeQueryAppointCommand;

    @Override
    public Result<PageVO<CaseDisposePageResponse>> queryPage(CaseDisposePageRequest request) {
        return caseDisposePageCommand.execute(request);
    }

    @Override
    public Result preLitigationMediation(CaseDisposePreLitigationMediationRequest request) {
        return caseDisposePreLitigationMediationCommand.execute(request);
    }

    @Override
    public Result withdrawCase(CaseDisposeWithdrawCaseRequest request) {
        return caseDisposeWithdrawCommand.execute(request);
    }

    @Override
    public Result<CaseDisposeResponse> getDetailById(String caseId) {
        return caseDisposeDetailGetCommand.execute(caseId);
    }

    @Override
    public Result<List<CaseDisposalFileResponse>> queryDetailFileById(String caseId) {
        return caseDisposalFileGetCaseIdCommand.execute(caseId);
    }

    @Override
    public Result deleteFileById(String id) {
        return caseDisposalFileDeleteByIdCommand.execute(id);
    }

    @Override
    public Result<CaseDisposeFormulaResponse> getFormulaByRequest(CaseDisposeFormulaRequest request) {
        return caseDisposeFormulaCommand.execute(request);
    }

    @Override
    public Result updateNormal(CaseDisposeNormalUpdateRequest request) {
        return normalUpdateCommand.execute(request);
    }

    @Override
    public Result updateRegister(CaseDisposeRegisterUpdateRequest request) {
        return registerUpdateCommand.execute(request);
    }

    @Override
    public Result updateJudgment(CaseDisposeJudgmentUpdateRequest request) {
        return judgmentUpdateCommand.execute(request);
    }

    @Override
    public Result updateMediation(CaseDisposeMediationUpdateRequest request) {
        return mediationUpdateCommand.execute(request);
    }

    @Override
    public Result updateExecution(CaseDisposeExecutionUpdateRequest request) {
        return executionUpdateCommand.execute(request);
    }

    @Override
    public Result<List<AppointAssetBatchResponse>> queryAppointList() {
        return caseDisposeQueryAppointCommand.execute();
    }
}
